// call方法是在function的原型链上的方法
// 需要传入显示绑定的对象, 需要判断,如果是null或undefined, 那么会绑定到window上
Function.prototype.myCall = function (context, ...args) {
  // 这里进行第一步预处理
  context = context || window;
  // 在这里进行了第二步预处理
  context = Object(context);
  // 创建一个独一无二的key
  let mykey = Symbol("mykey");
  // 这里是利用了隐式绑定,对象调用,那么this默认绑定到对象上
  context[mykey] = this;
  // 得到结果
  let res = context[mykey](...args);
  // 删除属性
  Reflect.deleteProperty(context, mykey);
  return res;
};
